package app

import (
	"context"
	"time"

	"github.com/gogf/gf/v2/frame/g"
	"github.com/gogf/gf/v2/os/gfile"
)

// 升级到v0_11 处理数据库数据调整
func S升级到v0_11(上下文 context.Context) {
	所有记录, 错误 := g.DB().Model("group_bookmark").All()
	if 错误 != nil {
		g.Log().Fatal(上下文, 错误)
	}

	if len(所有记录) > 0 {
		g.Log().Info(上下文, "正在升级处理中")

		数据库配置 := g.DB().GetConfig()
		if 数据库配置.Type == "sqlite" {
			g.Log().Info(上下文, "正在备份sqlite数据库")
			错误 := gfile.CopyFile(数据库配置.Name, 数据库配置.Name+"."+time.Now().Format("0102150405")+".bak")
			if 错误 != nil {
				g.Log().Fatal(上下文, 错误)
			}
		}

		for _, 记录 := range 所有记录 {
			_, 错误 := g.DB().Model("bookmark").Where("bm_id", 记录.Map()["bm_id"]).Update(g.Map{
				"drop_at":  记录.Map()["drop_at"],
				"cate_id":  记录.Map()["cate_id"],
				"group_id": 记录.Map()["group_id"],
				"sorts":    记录.Map()["sorts"],
			})
			if 错误 != nil {
				g.Log().Fatal(上下文, 错误)
			}
		}

		g.DB().Exec(上下文, "drop table group_bookmark")

		g.Log().Info(上下文, "升级处理完成")
	}
}
